home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / DClap / DFile.h < prev    next >
Text File  |  1996-07-05  |  4KB  |  124 lines

  1. // DFile.h
  2.  
  3. #ifndef _DFILE_
  4. #define _DFILE_
  5.  
  6.  
  7. #include "DObject.h"
  8. #include "Dvibrant.h"
  9.  
  10.  
  11. class    DFileManager    : public    DObject
  12. {
  13.     static char    fName[640];
  14. public:
  15.     enum FileTypes { kNothing, kIsFile, kIsFolder };
  16.     static const char* kUntitled;
  17.     
  18.     static void SetFilename( const char* name);
  19.     static const char* GetInputFileName( const char* extension,  const char* mactype);
  20.     static const char* GetOutputFileName( const char* defaultname);        
  21.     static const char* GetFolderName();
  22.     static const char* GetProgramPath();
  23.     static const char* FilenameFromPath( const char* pathname);
  24.     static const char* PathOnlyFromPath( const char* pathname);
  25.     static char*    TempFilename( char* namestore = NULL);
  26.     static char*  TempFilenameonly( char* namestore = NULL);
  27.     static char*  TempFolder( char* namestore = NULL);
  28.     static Boolean CreateFolder( const char* pathname);
  29.     static const char* BuildPath( const char* rootpath, const char* subfolder, 
  30.                                                     const char* filename = NULL);
  31.     static const char* FileSuffix( const char* pathname);
  32.     static void ReplaceSuffix( char* filename, long maxname, const char* suffix);
  33.     static Boolean FileExists( const char* pathname);
  34.     static short FileOrFolderExists( const char* pathname);
  35.     static void UnixToLocalPath( char*& pathname);
  36.     static Boolean IsRelativePath(const char* path);
  37.     static Boolean Rename( const char* pathname, const char* newpathname);
  38.     
  39. };
  40.  
  41. extern    DFileManager*        gFileManager;
  42.  
  43.  
  44.  
  45. class DFile : public DObject
  46. {
  47. protected:
  48.     Boolean fUseNameStore;
  49.     char        fNameStore[37];
  50. public:    
  51.     FILE*    fFile;
  52.     char*    fName;
  53.     char*    fMode;
  54.     char* fType;
  55.     char* fSire;
  56.     Boolean fEof;
  57.     static char* fgType;
  58.     static char* fgSire;
  59.     
  60.     DFile();
  61.     DFile(const char* filename, const char* openmode = "r",
  62.                 const char* ftype = NULL, const char* fcreator = NULL);
  63.     virtual ~DFile();
  64.     virtual    Boolean suicide(void);  // prefered to delete 
  65.     virtual    Boolean suicide(short ownercount);
  66.  
  67.     virtual void Initialize(const char* filename, const char* openmode = "r",
  68.                     const char* ftype = NULL, const char* fcreator = NULL);
  69.     virtual const char*    GetName() { return fName; }
  70.     virtual const char*    GetShortname() { return gFileManager->FilenameFromPath(fName); }
  71.     virtual void SetName(const char* newname);
  72.     
  73.             // short result in most funcs here is error code or 0
  74.     virtual short Open(const char* openmode = NULL);
  75.     short OpenFile(const char* openmode = NULL) { return this->Open(openmode); }
  76.     virtual short Close();
  77.     short CloseFile() { return this->Close(); }
  78.     virtual short GetDataLength(ulong& filelen);
  79.     virtual short GetDataMark(ulong& fileindex);
  80.     ulong Tell() { ulong fileindex; GetDataMark( fileindex); return fileindex; }
  81.     ulong LengthF() { ulong filelen; GetDataLength( filelen); return filelen; }
  82.     virtual short SetDataMark(ulong fileindex);
  83.     short Seek(ulong fileindex) { return SetDataMark( fileindex); }
  84.     virtual Boolean Exists();
  85.     virtual Boolean EndOfFile();
  86.     Boolean Eof() { return EndOfFile(); }
  87.     virtual Boolean IsOpen() { return fFile != NULL; }
  88.     virtual void SetMode(const char* openmode);
  89.  
  90.     virtual Boolean Delete();
  91.     virtual Boolean Rename(const char* newname);
  92.     virtual void Create(const char* filetype, const char* creator);  // type,creator only honored on mac
  93.  
  94.     virtual short GetFileType(long& fileType);
  95.     virtual short ReadData( void* buffer, ulong& count);
  96.     virtual short ReadUntil( void* buffer, ulong& count, char stopchar);
  97.     virtual short ReadLine( char* line, ulong count);
  98.     virtual short WriteData( void* buffer, ulong& count);
  99.     virtual short WriteLine( char* line, Boolean addNewline= false);
  100.     short WriteLn( char* line) { return WriteLine( line, true); }
  101. };
  102.  
  103.  
  104.  
  105.     // DTempFile is mainly a quick hack till we get iostreams written into critical places
  106.     // use tempfile to write to then read back into memory:
  107.     //   DTempFile* tmp = new DTempFile();  
  108.     //   tmp->WriteLine(data); tmp->WriteLine(data); ...
  109.     //     ulong datasize;
  110.     //     char* data= tmp->ReadIntoMemory(datasize);
  111.     //     delete tmp;
  112.     
  113. class DTempFile : public DFile
  114. {
  115. public:
  116.     DTempFile();
  117.     virtual ~DTempFile(); // delete temp file
  118.     virtual char* ReadIntoMemory(ulong& bytesread, Boolean deleteAfterRead= true);
  119. };
  120.  
  121.  
  122.  
  123. #endif // _DFILE_
  124.